﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0079)mhtml:file://E:\sve-air\documentacion\RSA Signature Schemes - Crypto++ Wiki.mht -->
<HTML lang=en 
dir=ltr><HEAD><TITLE>RSA Signature Schemes - Crypto++ Wiki</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META content="MSHTML 6.00.6000.17080" name=GENERATOR><LINK href="/favicon.ico" 
rel="shortcut icon"><LINK title="Crypto++ Wiki (en)" 
href="/w/opensearch_desc.php" type=application/opensearchdescription+xml 
rel=search><LINK title="Crypto++ Wiki Atom feed" 
href="/w/index.php?title=Special:RecentChanges&amp;feed=atom" 
type=application/atom+xml rel=alternate><LINK media=screen 
href="RSA%20Signature%20Schemes%20-%20Crypto++%20Wiki_archivos/shared.css" 
rel=stylesheet><LINK media=print 
href="RSA%20Signature%20Schemes%20-%20Crypto++%20Wiki_archivos/commonPrint.css" 
rel=stylesheet><LINK media=screen 
href="RSA%20Signature%20Schemes%20-%20Crypto++%20Wiki_archivos/main.css" 
rel=stylesheet><!--[if lt IE 5.5000]><link rel="stylesheet" href="/w/skins/monobook/IE50Fixes.css?270" media="screen" /><![endif]--><!--[if IE 5.5000]><link rel="stylesheet" href="/w/skins/monobook/IE55Fixes.css?270" media="screen" /><![endif]--><!--[if IE 6]><link rel="stylesheet" href="/w/skins/monobook/IE60Fixes.css?270" media="screen" /><![endif]--><!--[if IE 7]><LINK 
media=screen 
href="RSA%20Signature%20Schemes%20-%20Crypto++%20Wiki_archivos/IE70Fixes.css" 
rel=stylesheet><![endif]--><LINK 
href="/w/index.php?title=MediaWiki:Common.css&amp;usemsgcache=yes&amp;ctype=text%2Fcss&amp;smaxage=18000&amp;action=raw&amp;maxage=18000" 
rel=stylesheet><LINK media=print 
href="/w/index.php?title=MediaWiki:Print.css&amp;usemsgcache=yes&amp;ctype=text%2Fcss&amp;smaxage=18000&amp;action=raw&amp;maxage=18000" 
rel=stylesheet><LINK 
href="/w/index.php?title=MediaWiki:Monobook.css&amp;usemsgcache=yes&amp;ctype=text%2Fcss&amp;smaxage=18000&amp;action=raw&amp;maxage=18000" 
rel=stylesheet><LINK 
href="RSA%20Signature%20Schemes%20-%20Crypto++%20Wiki_archivos/index.css" 
rel=stylesheet>
<SCRIPT>
var skin="monobook",
stylepath="/w/skins",
wgUrlProtocols="http\\:\\/\\/|https\\:\\/\\/|ftp\\:\\/\\/|irc\\:\\/\\/|gopher\\:\\/\\/|telnet\\:\\/\\/|nntp\\:\\/\\/|worldwind\\:\\/\\/|mailto\\:|news\\:|svn\\:\\/\\/",
wgArticlePath="/wiki/$1",
wgScriptPath="/w",
wgScriptExtension=".php",
wgScript="/w/index.php",
wgVariantArticlePath=false,
wgActionPaths={},
wgServer="http://www.cryptopp.com",
wgCanonicalNamespace="",
wgCanonicalSpecialPageName=false,
wgNamespaceNumber=0,
wgPageName="RSA_Signature_Schemes",
wgTitle="RSA Signature Schemes",
wgAction="view",
wgArticleId=1862,
wgIsArticle=true,
wgUserName=null,
wgUserGroups=null,
wgUserLanguage="en",
wgContentLanguage="en",
wgBreakFrames=false,
wgCurRevisionId=7350,
wgVersion="1.16.0",
wgEnableAPI=true,
wgEnableWriteAPI=true,
wgSeparatorTransformTable=["", ""],
wgDigitTransformTable=["", ""],
wgMainPageTitle="Main Page",
wgFormattedNamespaces={"-2": "Media", "-1": "Special", "0": "", "1": "Talk", "2": "User", "3": "User talk", "4": "Crypto++ Wiki", "5": "Crypto++ Wiki talk", "6": "File", "7": "File talk", "8": "MediaWiki", "9": "MediaWiki talk", "10": "Template", "11": "Template talk", "12": "Help", "13": "Help talk", "14": "Category", "15": "Category talk"},
wgNamespaceIds={"media": -2, "special": -1, "": 0, "talk": 1, "user": 2, "user_talk": 3, "crypto++_wiki": 4, "crypto++_wiki_talk": 5, "file": 6, "file_talk": 7, "mediawiki": 8, "mediawiki_talk": 9, "template": 10, "template_talk": 11, "help": 12, "help_talk": 13, "category": 14, "category_talk": 15, "image": 6, "image_talk": 7},
wgSiteName="Crypto++ Wiki",
wgCategories=["Sample", "Download", "Public Key", "Signature"],
wgRestrictionEdit=[],
wgRestrictionMove=[];
</SCRIPT>

<SCRIPT 
src="RSA%20Signature%20Schemes%20-%20Crypto++%20Wiki_archivos/wikibits.js"></SCRIPT>

<SCRIPT 
src="RSA%20Signature%20Schemes%20-%20Crypto++%20Wiki_archivos/ajax.js"></SCRIPT>

<SCRIPT 
src="RSA%20Signature%20Schemes%20-%20Crypto++%20Wiki_archivos/index.php"></SCRIPT>
</HEAD>
<BODY 
class="mediawiki ltr ns-0 ns-subject page-RSA_Signature_Schemes skin-monobook">
<DIV id=globalWrapper>
<DIV id=column-content>
<DIV id=content><A id=top></A>
<H1 class=firstHeading id=firstHeading>RSA Signature Schemes</H1>
<DIV id=bodyContent>
<H3 id=siteSub>From Crypto++ Wiki</H3>
<DIV id=contentSub></DIV>
<DIV id=jump-to-nav>Jump to: <A 
href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#column-one">navigation</A>, 
<A 
href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#searchInput">search</A></DIV><!-- start content -->
<P>For the main <A class=mw-redirect title=RSA 
href="http://www.cryptopp.com/wiki/RSA">RSA</A> page, visit <A 
title="RSA Cryptography" 
href="http://www.cryptopp.com/wiki/RSA_Cryptography">RSA Cryptography</A>. For 
encryption schemes, visit <A title="RSA Encryption Schemes" 
href="http://www.cryptopp.com/wiki/RSA_Encryption_Schemes">RSA Encryption 
Schemes</A>. For a detailed treatment of key generation, loading, saving, 
validation, and formats, see <A title="Keys and Formats" 
href="http://www.cryptopp.com/wiki/Keys_and_Formats">Keys and Formats</A>. </P>
<TABLE class=toc id=toc>
  <TBODY>
  <TR>
    <TD>
      <DIV id=toctitle>
      <H2>Contents</H2></DIV>
      <UL>
        <LI class="toclevel-1 tocsection-1"><A 
        href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#Sample_Programs"><SPAN 
        class=tocnumber>1</SPAN> <SPAN class=toctext>Sample Programs</SPAN></A> 
        <UL>
          <LI class="toclevel-2 tocsection-2"><A 
          href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#Generate_Keys"><SPAN 
          class=tocnumber>1.1</SPAN> <SPAN class=toctext>Generate 
          Keys</SPAN></A> 
          <LI class="toclevel-2 tocsection-3"><A 
          href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#RSA_Signature_Scheme_with_Appendix"><SPAN 
          class=tocnumber>1.2</SPAN> <SPAN class=toctext>RSA Signature Scheme 
          with Appendix</SPAN></A> 
          <LI class="toclevel-2 tocsection-4"><A 
          href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#RSA_Signature_Scheme_with_Appendix_.28Filters.29"><SPAN 
          class=tocnumber>1.3</SPAN> <SPAN class=toctext>RSA Signature Scheme 
          with Appendix (Filters)</SPAN></A> 
          <LI class="toclevel-2 tocsection-5"><A 
          href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#RSA_Probabilistic_Signature_Scheme_with_Recovery"><SPAN 
          class=tocnumber>1.4</SPAN> <SPAN class=toctext>RSA Probabilistic 
          Signature Scheme with Recovery</SPAN></A> 
          <LI class="toclevel-2 tocsection-6"><A 
          href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#RSA_Probabilistic_Signature_Scheme_with_Recovery_.28Filter.29"><SPAN 
          class=tocnumber>1.5</SPAN> <SPAN class=toctext>RSA Probabilistic 
          Signature Scheme with Recovery (Filter)</SPAN></A> 
          <LI class="toclevel-2 tocsection-7"><A 
          href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#RSA_Signature_Scheme_.28PKCS_v1.5.29"><SPAN 
          class=tocnumber>1.6</SPAN> <SPAN class=toctext>RSA Signature Scheme 
          (PKCS v1.5)</SPAN></A> 
          <LI class="toclevel-2 tocsection-8"><A 
          href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#RSA_Signature_Generation_Given_d_and_n"><SPAN 
          class=tocnumber>1.7</SPAN> <SPAN class=toctext>RSA Signature 
          Generation Given d and n</SPAN></A> 
          <LI class="toclevel-2 tocsection-9"><A 
          href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#RSA_Signature_Verification_Given_e_and_n"><SPAN 
          class=tocnumber>1.8</SPAN> <SPAN class=toctext>RSA Signature 
          Verification Given e and n</SPAN></A> </LI></UL>
        <LI class="toclevel-1 tocsection-10"><A 
        href="http://www.cryptopp.com/wiki/RSA_Signature_Schemes#Downloads"><SPAN 
        class=tocnumber>2</SPAN> <SPAN class=toctext>Downloads</SPAN></A> 
      </LI></UL></TD></TR></TBODY></TABLE>
<SCRIPT>if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </SCRIPT>

<H2><SPAN class=mw-headline id=Sample_Programs>Sample Programs </SPAN></H2>
<H3><SPAN class=mw-headline id=Generate_Keys>Generate Keys </SPAN></H3><PRE>///////////////////////////////////////
// Pseudo Random Number Generator
AutoSeededRandomPool rng;

///////////////////////////////////////
// Generate Parameters
InvertibleRSAFunction params;
params.GenerateRandomWithKeySize(rng, 1536);

///////////////////////////////////////
// Generated Parameters
Integer n = params.GetModulus();
Integer p = params.GetPrime1();
Integer q = params.GetPrime2();
Integer d = params.GetPrivateExponent();
Integer e = params.GetPublicExponent();

///////////////////////////////////////
// Dump
cout &lt;&lt; "RSA Parameters:" &lt;&lt; endl;
cout &lt;&lt; " n: " &lt;&lt; n &lt;&lt; endl;
cout &lt;&lt; " p: " &lt;&lt; p &lt;&lt; endl;
cout &lt;&lt; " q: " &lt;&lt; q &lt;&lt; endl;
cout &lt;&lt; " d: " &lt;&lt; d &lt;&lt; endl;
cout &lt;&lt; " e: " &lt;&lt; e &lt;&lt; endl;
cout &lt;&lt; endl;

///////////////////////////////////////
// Create Keys
RSA::PrivateKey privateKey(params);
RSA::PublicKey publicKey(params);</PRE>
<H3><SPAN class=mw-headline id=RSA_Signature_Scheme_with_Appendix>RSA Signature 
Scheme with Appendix </SPAN></H3><PRE>AutoSeededRandomPool rng;

InvertibleRSAFunction parameters;
parameters.GenerateRandomWithKeySize(rng, 1536);

RSA::PrivateKey privateKey(parameters);
RSA::PublicKey publicKey(parameters);

// Message
string message = "Yoda said, Do or Do Not. There is no try.";

// Signer object
RSASS&lt;PSS, SHA1&gt;::Signer signer(privateKey);

// Create signature space
size_t length = signer.MaxSignatureLength();
SecByteBlock signature(length);

// Sign message
signer.SignMessage(rng, (const byte*) message.c_str(),
    message.length(), signature);

// Verifier object
RSASS&lt;PSS, SHA1&gt;::Verifier verifier(publicKey);

// Verify
bool result = verifier.VerifyMessage((const byte*)message.c_str(),
    message.length(), signature, signature.size());

// Result
if(true == result) {
    cout &lt;&lt; "Signature on message verified" &lt;&lt; endl;
} else {
    cout &lt;&lt; "Message verification failed" &lt;&lt; endl;
}</PRE>
<H3><SPAN class=mw-headline 
id=RSA_Signature_Scheme_with_Appendix_.28Filters.29>RSA Signature Scheme with 
Appendix (Filters) </SPAN></H3><PRE>// Generate ot Load keys
RSA::PrivateKey privateKey = ...;
RSA::PublicKey publicKey = ...;

// Message
string message = "Yoda said, Do or Do Not. There is no try.";
string signature, recovered;

////////////////////////////////////////////////
// Sign and Encode
RSASS&lt;PSS, SHA1&gt;::Signer signer(privateKey);

StringSource(message, true, 
    new SignerFilter(rng, signer,
        new StringSink(signature)
  ) // SignerFilter
); // StringSource

////////////////////////////////////////////////
// Verify and Recover
RSASS&lt;PSS, SHA1&gt;::Verifier verifier(publicKey);

StringSource(message+signature, true,
    new SignatureVerificationFilter(
        verifier,
        new StringSink(recovered),
        SignatureVerificationFilter::THROW_EXCEPTION |
        SignatureVerificationFilter::PUT_MESSAGE
  ) // SignatureVerificationFilter
); // StringSource

////////////////////////////////////////////////
// No exception - use recovered message
...</PRE>
<H3><SPAN class=mw-headline 
id=RSA_Probabilistic_Signature_Scheme_with_Recovery>RSA Probabilistic Signature 
Scheme with Recovery </SPAN></H3><PRE>////////////////////////////////////////////////
// Generate keys
AutoSeededRandomPool rng;

InvertibleRSAFunction params;
params.GenerateRandomWithKeySize(rng, 1536);

RSA::PrivateKey privateKey(params);
RSA::PublicKey publicKey(params);

// Signing      
RSASS&lt;PSSR, SHA1&gt;::Signer signer(privateKey);
RSASS&lt;PSSR, SHA1&gt;::Verifier verifier(publicKey);

// Setup
byte message[] = "RSA-PSSR Test";
size_t messageLen = sizeof(message);      

////////////////////////////////////////////////
// Sign and Encode
SecByteBlock signature(signer.MaxSignatureLength(messageLen));

size_t signatureLen = signer.SignMessageWithRecovery(rng, message,
    messageLen, NULL, 0, signature);

////////////////////////////////////////////////
// Verify and Recover
SecByteBlock recovered(
    verifier.MaxRecoverableLengthFromSignatureLength(signatureLen)
);

DecodingResult result = verifier.RecoverMessage(recovered, NULL,
    0, signature, signatureLen);

if (!result.isValidCoding) {
    throw Exception(Exception::OTHER_ERROR, "Invalid Signature");
}

////////////////////////////////////////////////
// Use recovered message
...</PRE>
<H3><SPAN class=mw-headline 
id=RSA_Probabilistic_Signature_Scheme_with_Recovery_.28Filter.29>RSA 
Probabilistic Signature Scheme with Recovery (Filter) </SPAN></H3><PRE>////////////////////////////////////////////////
// Generate or Load keys
RSA::PrivateKey privateKey = ...;
RSA::PublicKey publicKey = ...; 

////////////////////////////////////////////////
// Setup
string message = "RSA-PSSR Test", signature, recovered;    

////////////////////////////////////////////////
// Sign and Encode
RSASS&lt;PSSR, SHA1&gt;::Signer signer(privateKey);

StringSource(message, true, 
    new SignerFilter(rng, signer,
        new StringSink(signature),
        true // putMessage for recovery
   ) // SignerFilter
); // StringSource

////////////////////////////////////////////////
// Verify and Recover
RSASS&lt;PSSR, SHA1&gt;::Verifier verifier(publicKey);

StringSource(signature, true,
    new SignatureVerificationFilter(
        verifier,
        new StringSink(recovered),
        THROW_EXCEPTION | PUT_MESSAGE
   ) // SignatureVerificationFilter
); // StringSource

cout &lt;&lt; "Verified signature on message" &lt;&lt; endl;</PRE>
<H3><SPAN class=mw-headline id=RSA_Signature_Scheme_.28PKCS_v1.5.29>RSA 
Signature Scheme (PKCS v1.5) </SPAN></H3>
<P>Though similar to RSA-SSA, <TT>RSASSA_PKCS1v15_SHA_Signer</TT> and 
<TT>RSASSA_PKCS1v15_SHA_Verifier</TT> uses PKCS v1.5 padding. The <A class=new 
title="MD2 (page does not exist)" 
href="http://www.cryptopp.com/w/index.php?title=MD2&amp;action=edit&amp;redlink=1">MD2</A> 
and <A class=new title="MD5 (page does not exist)" 
href="http://www.cryptopp.com/w/index.php?title=MD5&amp;action=edit&amp;redlink=1">MD5</A> 
variants of <TT>RSASSA_PKCS1v15_&lt;<I>Digest</I>&gt;_Signer</TT> and 
<TT>RSASSA_PKCS1v15_&lt;<I>Digest</I>&gt;_Verifier</TT> <B>should not</B> be 
used. </P><PRE>AutoSeededRandomPool rng;

InvertibleRSAFunction parameters;
parameters.GenerateRandomWithKeySize(rng, 1536);

RSA::PrivateKey privateKey(parameters);
RSA::PublicKey publicKey(parameters);

// Message
string message = "Yoda said, Do or Do Not. There is no try.";

// Signer object
RSASSA_PKCS1v15_SHA_Signer signer(privateKey);

// Create signature space
size_t length = signer.MaxSignatureLength();
SecByteBlock signature(length);

// Sign message
signer.SignMessage(rng, (const byte*) message.c_str(),
    message.length(), signature);

// Verifier object
RSASSA_PKCS1v15_SHA_Verifier verifier(publicKey);

// Verify
bool result = verifier.VerifyMessage((const byte*)message.c_str(),
    message.length(), signature, signature.size());

// Result
if(true == result) {
    cout &lt;&lt; "Signature on message verified" &lt;&lt; endl;
} else {
    cout &lt;&lt; "Message verification failed" &lt;&lt; endl;
}</PRE>
<H3><SPAN class=mw-headline id=RSA_Signature_Generation_Given_d_and_n>RSA 
Signature Generation Given d and n </SPAN></H3>
<P>Given Integers <I>d</I> and <I>n</I> rather than a <TT>RSA::PrivateKey</TT>, 
perform the following to create a signer object <A class="external autonumber" 
href="http://groups.google.com/group/cryptopp-users/browse_thread/thread/a35b8bc2e461a2ce/ea4375a56693460">[1]</A>. 
Attempting to use a <TT>RSA::PrivateKey</TT> by calling <TT>Initialize</TT> 
(i.e., not factoring <I>n</I>) will result in an exception <A 
class="external autonumber" 
href="http://groups.google.com/group/cryptopp-users/browse_thread/thread/4a44ca44953e64d8/b9220a4d625cd22d">[2]</A>. 
</P><PRE>// Use InvertibleRSAFunction to factor 'n'
InvertibleRSAFunction params;
params.Initialize(n, e, d);

RSA::PrivateKey(params);

...</PRE>
<P>If the public exponent has been misplaced, common values for the exponent are 
3 (Microsoft CAPI/C#), 17 (Crypto++), and 65535 (Java). </P>
<H3><SPAN class=mw-headline id=RSA_Signature_Verification_Given_e_and_n>RSA 
Signature Verification Given e and n </SPAN></H3>
<P>Given Integers <I>e</I> and <I>n</I> rather than a <TT>RSA::PublicKey</TT>, 
perform the following to create a verifier object. </P><PRE>RSASS&lt;PSS, SHA&gt;::Verifier verifier(n, e);</PRE><PRE>RSASS&lt;PSS, SHA&gt;::Verifier verifier;
verifier.AccessKey().Initialize(n, e);</PRE>
<H2><SPAN class=mw-headline id=Downloads>Downloads </SPAN></H2>
<P><A class=internal title=RSA-SSA-Test.zip 
href="http://www.cryptopp.com/w/images/8/8c/RSA-SSA-Test.zip">RSA-SSA-Test.zip</A> 
- Demonstrates RSA-SSA (Appendix) - 5KB </P>
<P><A class=internal title=RSA-SSA-Filter-Test.zip 
href="http://www.cryptopp.com/w/images/9/9b/RSA-SSA-Filter-Test.zip">RSA-SSA-Filter-Test.zip</A> 
- Demonstrates RSA-SSA (Appendix) using Filters - 5KB </P>
<P><A class=internal title=RSA-PSSR-Test.zip 
href="http://www.cryptopp.com/w/images/c/cf/RSA-PSSR-Test.zip">RSA-PSSR-Test.zip</A> 
- Demonstrates RSA-PSSR (Recovery) - 7KB </P>
<P><A class=internal title=RSA-PSSR-Filter-Test.zip 
href="http://www.cryptopp.com/w/images/e/ef/RSA-PSSR-Filter-Test.zip">RSA-PSSR-Filter-Test.zip</A> 
Demonstrates RSA-PSSR (Recovery) using Filters - 5KB </P>
<P><A class=internal title=RSA-SSA-PKCSv15-Test.zip 
href="http://www.cryptopp.com/w/images/c/c8/RSA-SSA-PKCSv15-Test.zip">RSA-SSA-PKCSv15-Test.zip</A> 
- Demonstrates RSA-SSA (PKCS v1.5) - 5KB </P><!-- 
NewPP limit report
Preprocessor node count: 120/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
Expensive parser function count: 0/100
--><!-- Saved in parser cache with key crypto-wikicryptopp_:pcache:idhash:1862-0!1!0!!en!2!edit=0 and timestamp 20110217180624 -->
<DIV class=printfooter>Retrieved from "<A 
href="mhtml:file://E:\sve-air\documentacion\RSA Signature Schemes - Crypto++ Wiki.mht!http://www.cryptopp.com/wiki/RSA_Signature_Schemes">http://www.cryptopp.com/wiki/RSA_Signature_Schemes</A>"</DIV>
<DIV class=catlinks id=catlinks>
<DIV id=mw-normal-catlinks><A title=Special:Categories 
href="http://www.cryptopp.com/wiki/Special:Categories">Categories</A>: <SPAN 
dir=ltr><A title=Category:Sample 
href="http://www.cryptopp.com/wiki/Category:Sample">Sample</A></SPAN> | <SPAN 
dir=ltr><A title=Category:Download 
href="http://www.cryptopp.com/wiki/Category:Download">Download</A></SPAN> | 
<SPAN dir=ltr><A title="Category:Public Key" 
href="http://www.cryptopp.com/wiki/Category:Public_Key">Public Key</A></SPAN> | 
<SPAN dir=ltr><A title=Category:Signature 
href="http://www.cryptopp.com/wiki/Category:Signature">Signature</A></SPAN></DIV></DIV><!-- end content -->
<DIV class=visualClear></DIV></DIV></DIV></DIV>
<DIV id=column-one>
<DIV class=portlet id=p-cactions>
<H5>Views</H5>
<DIV class=pBody>
<UL>
  <LI class=selected id=ca-nstab-main><A title="View the content page [c]" 
  accessKey=c 
  href="mhtml:file://E:\sve-air\documentacion\RSA Signature Schemes - Crypto++ Wiki.mht!http://www.cryptopp.com/wiki/RSA_Signature_Schemes">Page</A> 

  <LI class=new id=ca-talk><A title="Discussion about the content page [t]" 
  accessKey=t 
  href="http://www.cryptopp.com/w/index.php?title=Talk:RSA_Signature_Schemes&amp;action=edit&amp;redlink=1">Discussion</A> 

  <LI id=ca-viewsource><A 
  title="This page is protected.&#10;You can view its source [e]" accessKey=e 
  href="http://www.cryptopp.com/w/index.php?title=RSA_Signature_Schemes&amp;action=edit">View 
  source</A> 
  <LI id=ca-history><A title="Past revisions of this page [h]" accessKey=h 
  href="http://www.cryptopp.com/w/index.php?title=RSA_Signature_Schemes&amp;action=history">History</A> 
  </LI></UL></DIV></DIV>
<DIV class=portlet id=p-personal>
<H5>Personal tools</H5>
<DIV class=pBody>
<UL>
  <LI id=pt-login><A 
  title="You are encouraged to log in; however, it is not mandatory [o]" 
  accessKey=o 
  href="http://www.cryptopp.com/w/index.php?title=Special:UserLogin&amp;returnto=RSA_Signature_Schemes">Log 
  in / create account</A> </LI></UL></DIV></DIV>
<DIV class=portlet id=p-logo><A title="Visit the main page" 
style="BACKGROUND-IMAGE: url(http://www.cryptopp.com/w/images/0/0b/Logo-Steel.png)" 
href="http://www.cryptopp.com/wiki/Main_Page"></A></DIV>
<SCRIPT type=text/javascript> if (window.isMSIE55) fixalpha(); </SCRIPT>

<DIV class="generated-sidebar portlet" id=p-navigation>
<H5>Navigation</H5>
<DIV class=pBody>
<UL>
  <LI id=n-mainpage-description><A title="Visit the main page [z]" accessKey=z 
  href="http://www.cryptopp.com/wiki/Main_Page">Main page</A> 
  <LI id=n-portal><A 
  title="About the project, what you can do, where to find things" 
  href="http://www.cryptopp.com/wiki/Crypto++_Wiki:Community_portal">Community 
  portal</A> 
  <LI id=n-currentevents><A 
  title="Find background information on current events" 
  href="http://www.cryptopp.com/wiki/Crypto++_Wiki:Current_events">Current 
  events</A> 
  <LI id=n-recentchanges><A title="The list of recent changes in the wiki [r]" 
  accessKey=r href="http://www.cryptopp.com/wiki/Special:RecentChanges">Recent 
  changes</A> 
  <LI id=n-randompage><A title="Load a random page [x]" accessKey=x 
  href="http://www.cryptopp.com/wiki/Special:Random">Random page</A> 
  <LI id=n-help><A title="The place to find out" 
  href="http://www.cryptopp.com/wiki/Help:Contents">Help</A> 
</LI></UL></DIV></DIV>
<DIV class=portlet id=p-search>
<H5><LABEL for=searchInput>Search</LABEL></H5>
<DIV class=pBody id=searchBody>
<FORM id=searchform action=/w/index.php><INPUT type=hidden value=Special:Search 
name=title> <INPUT id=searchInput title="Search Crypto++ Wiki" accessKey=f 
type=search name=search> <INPUT class=searchButton id=searchGoButton title="Go to a page with this exact name if exists" type=submit value=Go name=go>&nbsp; 
<INPUT class=searchButton id=mw-searchButton title="Search the pages for this text" type=submit value=Search name=fulltext> 
</FORM></DIV></DIV>
<DIV class=portlet id=p-tb>
<H5>Toolbox</H5>
<DIV class=pBody>
<UL>
  <LI id=t-whatlinkshere><A title="List of all wiki pages that link here [j]" 
  accessKey=j 
  href="http://www.cryptopp.com/wiki/Special:WhatLinksHere/RSA_Signature_Schemes">What 
  links here</A> 
  <LI id=t-recentchangeslinked><A 
  title="Recent changes in pages linked from this page [k]" accessKey=k 
  href="http://www.cryptopp.com/wiki/Special:RecentChangesLinked/RSA_Signature_Schemes">Related 
  changes</A> 
  <LI id=t-specialpages><A title="List of all special pages [q]" accessKey=q 
  href="http://www.cryptopp.com/wiki/Special:SpecialPages">Special pages</A> 
  <LI id=t-print><A title="Printable version of this page [p]" accessKey=p 
  href="http://www.cryptopp.com/w/index.php?title=RSA_Signature_Schemes&amp;printable=yes" 
  rel=alternate>Printable version</A> 
  <LI id=t-permalink><A title="Permanent link to this revision of the page" 
  href="http://www.cryptopp.com/w/index.php?title=RSA_Signature_Schemes&amp;oldid=7350">Permanent 
  link</A> </LI></UL></DIV></DIV></DIV><!-- end of the left (by default at least) column -->
<DIV class=visualClear></DIV>
<DIV id=footer>
<DIV id=f-poweredbyico><A href="http://www.mediawiki.org/"><IMG height=31 
alt="Powered by MediaWiki" 
src="RSA%20Signature%20Schemes%20-%20Crypto++%20Wiki_archivos/mht228(1).tmp" 
width=88></A></DIV>
<UL id=f-list>
  <LI id=lastmod>This page was last modified on 22 January 2011, at 07:46. 
  <LI id=viewcount>This page has been accessed 5,563 times. 
  <LI id=privacy><A title="Crypto++ Wiki:Privacy policy" 
  href="http://www.cryptopp.com/wiki/Crypto++_Wiki:Privacy_policy">Privacy 
  policy</A> 
  <LI id=about><A title="Crypto++ Wiki:About" 
  href="http://www.cryptopp.com/wiki/Crypto++_Wiki:About">About Crypto++ 
  Wiki</A> 
  <LI id=disclaimer><A title="Crypto++ Wiki:General disclaimer" 
  href="http://www.cryptopp.com/wiki/Crypto++_Wiki:General_disclaimer">Disclaimers</A> 
  </LI></UL></DIV></DIV>
<SCRIPT>if (window.runOnloadHook) runOnloadHook();</SCRIPT>
<!-- Served in 0.310 secs. --></BODY></HTML>
